package com.gexin.controller.system.product;

import com.gexin.common.AppGlobal;
import com.gexin.common.WebConst;
import com.gexin.common.cache.CacheUtils;
import com.gexin.common.utils.DateUtil;
import com.gexin.common.utils.StringUtil;
import com.gexin.controller.system.LoginController;
import com.gexin.core.web.SystemBaseController;
import com.gexin.model.product.*;
import com.gexin.model.shop.ShopInfo;
import com.gexin.model.system.AdminUser;
import com.gexin.model.template.TemplateWuliu;
import com.jfinal.ext.route.ControllerBind;
import com.jfinal.kit.JsonKit;
import com.jfinal.log.Log;
import com.jfinal.plugin.activerecord.Db;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 商品
 * @author 方俊逸
 *  2016-06-06
 *
 */

@ControllerBind(controllerKey = "/system/product", viewPath = "WEB-INF/system/product")
public class ProductController extends SystemBaseController {
	private static Log log = Log.getLog(ProductController.class);

	/** 是否页面注释敬请期待的字段  0 显示  1 不显示 */
	private  static  Integer  is_where_state=1;

	public void index(){
		log.info("商品列表");
		List<ProductType> product_type= ProductType.dao.findTypeByShopIdAndPid(ShopInfo.shop_id,0);
		setAttr("product_type", product_type);
		Products product = getModel(Products.class, "product");
		paginate(Products.dao.paginate(ShopInfo.shop_id, product,getpage(), WebConst.Page_Size));
		setAttr("product", product);
		//fang 2016-07-25
		setAttr("shop_id", ShopInfo.shop_id);
		AdminUser admin= AdminUser.dao.findById(getLoginUserId());
		if(admin==null || admin.getRoleId()==null){
			removeSessionAttr(WebConst.Session_SysUser);
			String  token    =getCookie(LoginController.login_key);
			removeSessionAttr(LoginController.login_key);
			CacheUtils.del(LoginController.login_key_time + token);// 缓存七天
			renderMsg("登录超时","长时间停留导致登录超时","/system/login/" + DateUtil.getTimestamp(),false,false);
			return;
		}
		setAttr("user_type", admin.getRoleId());
		render("product_list.html");
	}
	
	public void type_json(){
		String type =getPara();
		if(type!=null  && !type.equals("null")){
			List<ProductType>  list =  ProductType.dao.find("select type_name,id from t_product_type where pid=? and state=0",getParaToInt(0,0));
			success(list);
		}else{
			List<ProductType>  list =  ProductType.dao.find("select type_name,id from t_product_type where pid=?  and state=0",1000000);
			success(list);
		}
	
	}

	/**
	 * 商品审核员 通过商品
	 */
	public void through(){
		AdminUser admin=	AdminUser.dao.findById(getLoginUserId());
		if(admin.getRoleId().intValue()==AdminUser.userRole_type12 || admin.getRoleId().intValue()==AdminUser.userRole_type0){
			Products product= Products.dao.findById(getPara("id"));
			if(product==null || product.getId()==null){
				fail("抱歉，商品不存在");
				return;
			}
			if(product.getExamineState().intValue()!=Products.examine_state0){
				fail("抱歉，该商品审核状态不是待审核！");
				return;
			}
			product.setExamineState(Products.examine_state1);
			product.setExamineTime(new Date());
			product.setExamineUserId(getLoginUserId());
			product.update();
			success("操作成功");
		}else{
			fail("抱歉，您无权限");
			return;
		}
	}

	/**
	 * 商品审核员 拒绝商品
	 */
	public void refuse(){
		AdminUser admin=	AdminUser.dao.findById(getLoginUserId());
		if(admin.getRoleId().intValue()==AdminUser.userRole_type12 || admin.getRoleId().intValue()==AdminUser.userRole_type0){
			Products product= Products.dao.findById(getPara("id"));
			String reason= getPara("reason");
			if(product==null || product.getId()==null){
				fail("抱歉，商品不存在");
				return;
			}
			if(StringUtils.isEmpty(reason)){
				fail("抱歉，拒绝理由不能为空");
				return;
			}
			if(product.getExamineState().intValue()!=Products.examine_state0){
				fail("抱歉，该商品审核状态不是待审核！");
				return;
			}
			product.setExamineState(Products.examine_state2);
			product.setExamineTime(new Date());
			product.setExamineUserId(getLoginUserId());
			product.setFailReason(reason);
			product.update();
			success("操作成功");
		}else{
			fail("抱歉，您无权限");
			return;
		}
	}


	/**
	 * fang 2016-06-06
	 * 增加    add
	 * fang 修改  2016-06-19  商品标签
	 * 
	 */
	public void add(){
		log.info("商品增加!");
		setAttr("is_qd_show",is_where_state);

		List<ProductType>  type_list= ProductType.dao.findTypeByShopIdAndPid(ShopInfo.shop_id,0);
		setAttr("type_list", type_list);
	/*	//对应店铺的所有商品类型
		
		//对应店铺的所有供应商
		List<SupplierRelShop> supply_list=SupplierRelShop.dao.getSupplyUserByShopId(getShopIdByCookie());
		setAttr("supply_list", supply_list);*/
		
		//所有的分组
		List<ProductTag>tag_list= ProductTag.dao.getTagsByShopId(ShopInfo.shop_id);
		setAttr("tag_list", tag_list);
		//sku  系统和自己的
		String product_key= ProductSkuKey.dao.getKeyByShopId_ToJson(ShopInfo.shop_id);
		setAttr("product_key",product_key);
		//  系统加载的sku 的value
		String product_value= ProductSkuKey.dao.getValueByShopId_ToJson(ShopInfo.shop_id);
		setAttr("product_value",product_value);
		//系统加载所有的模版
		List<TemplateWuliu>  template_list= TemplateWuliu.dao.getTemplateListByShopId(ShopInfo.shop_id);
		setAttr("template_list", template_list);
		render("product_add.html");
	}
	/**
	 * fang 2016-06-19
	 * 增加/编辑    edit
	 * 修改   2016-06-20
	 * 
	 */
	public void edit(){
		log.info("商品编辑!");
		setAttr("is_qd_show",is_where_state);

		List<ProductType>  type_list= ProductType.dao.findTypeByShopIdAndPid(ShopInfo.shop_id,0);
		setAttr("type_list", type_list);
		
		Products product= Products.dao.findById(getPara());    //2016-06-19    方俊逸
		setAttr("product_json", JsonKit.toJson(product));
		setAttr("product", product);
		//得到所有的分组  2016-06-20
		List<ProductTagRel> choose_tag= ProductTagRel.dao.getTagRelsByProductId(getPara());
		setAttr("choose_tag_list", choose_tag);
		//根据product_id   得到所有的sku  和sku  value 
		List<ProductSkuValue> key_id_list= ProductSkuValue.dao.getKeyIdByProductId(getPara());
		//System.err.println(key_id_list);
		//然后根据  product_id 和 key_id  反过来  找到所有的 key_id   对应 的sku_value
		for(int i=0;i<key_id_list.size();i++){
			List<ProductSkuValue> value_list= ProductSkuValue.dao.getKeyIdByProductIdAndKeyId(getPara(),Integer.parseInt(key_id_list.get(i).getKeyId()));
			key_id_list.get(i).put("value_list",value_list );
		}
		setAttr("key_id_list", key_id_list);
		
		//处理SKU收个图片=========================    2016-09-01 肖得明新增处理
	//	List<Object>   sku_list_img =new ArrayList<Object>();
		Map<String,String>  map = new HashMap<String, String>();
		for(ProductSkuValue v  :   ProductSkuValue.dao.getKeyByProductId(getPara())){
			if(StringUtil.isNotBlank(v .getValueImage())){
				map.put(v.getValueId()+"", v .getValueImage());	
				//sku_list_img.add(map) ;
			}
		}
		setAttr("sku_thumb", JsonKit.toJson(map));
		
		
		setAttr("key_id_list_json", JsonKit.toJson(key_id_list));
		//找到所有的商品sku,
		List<ProductSku> sku_list= ProductSku.dao.getSkuByProductId(getParaToInt());
		setAttr("sku_list", JsonKit.toJson(sku_list));  //尝试多次终于成功
		
		//轮播图
		String banner_list[]=product.getImageBanner().split(",");
		setAttr("banner_list", banner_list);
		//详情图  image_detail
		String image_detail[]=product.getImageDetail().split(",");
		setAttr("image_detail", image_detail);
		
/*		//对应店铺的所有商品类型
		List<ProductType>  type_list=ProductType.dao.findAllByShopId(getShopIdByCookie());
		setAttr("type_list", type_list);
		//对应店铺的所有供应商
		List<SupplierRelShop> supply_list=SupplierRelShop.dao.getSupplyUserByShopId(getShopIdByCookie());
		setAttr("supply_list", supply_list);*/
		
		
		//所有的分组
		List<ProductTag>tag_list= ProductTag.dao.getTagsByShopId(ShopInfo.shop_id);
		setAttr("tag_list", tag_list);
		//sku  系统和自己的
		//第一个  norm的
		String product_key= ProductSkuKey.dao.getKeyByShopId_ToJson(ShopInfo.shop_id);
		setAttr("product_key",product_key);
		//第二个norm2 的
		if(key_id_list.size()==1){
			String product_key2= ProductSkuKey.dao.norm2_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId());
			setAttr("product_key2",product_key2);
			setAttr("product_key3","");
		}
		else if(key_id_list.size()==2 || key_id_list.size()==3){
			String product_key2= ProductSkuKey.dao.norm2_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId());
			setAttr("product_key2",product_key2);
			String product_key3= ProductSkuKey.dao.norm3_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId(),key_id_list.get(1).getKeyId());
			setAttr("product_key3",product_key3);
		}
		else{
			setAttr("product_key2","");
			setAttr("product_key3","");
		}
		//  系统加载的sku 的value
		String product_value= ProductSkuKey.dao.edit_getValueByProductId_ToJson(getPara(), ShopInfo.shop_id);
		setAttr("product_value",product_value);
		setAttr("product", Products.dao.findById(getParaToInt()));
		//系统加载所有的模版    fang   2016-07-13
		List<TemplateWuliu>  template_list= TemplateWuliu.dao.getTemplateListByShopId(ShopInfo.shop_id);
		setAttr("template_list", template_list);
		//render("product_edit.Eric.html");
		//2016-08-17  根据小袁要求,返回value
		List<ProductSkuValue>  all_value_list= ProductSkuValue.dao.getValueListByProductId(product.getId());
		//System.err.println("所以的value是"+all_value_list);
		String valueString="";
		if(all_value_list.size()!=0){
			for(int i=0;i<all_value_list.size();i++){
				if(i!=all_value_list.size()-1){
				    valueString=valueString+all_value_list.get(i).getValueId()+",";
				}
				else {
					valueString=valueString+all_value_list.get(i).getValueId();
				}
			}
		}
		setAttr("valueString", valueString);
		setAttr("view_type", getPara("view_type", "edit"));
		//System.err.println(valueString);
		render("product_edit.html");
	}

	/**
	 * 查看商品详情
	 */
	public void  select(){
		List<ProductType>  type_list= ProductType.dao.findTypeByShopIdAndPid(ShopInfo.shop_id,0);
		setAttr("type_list", type_list);

		Products product= Products.dao.findById(getPara());    //2016-06-19    方俊逸
		setAttr("product_json", JsonKit.toJson(product));
		setAttr("product", product);
		//得到所有的分组  2016-06-20
		List<ProductTagRel> choose_tag= ProductTagRel.dao.getTagRelsByProductId(getPara());
		setAttr("choose_tag_list", choose_tag);
		//根据product_id   得到所有的sku  和sku  value
		List<ProductSkuValue> key_id_list= ProductSkuValue.dao.getKeyIdByProductId(getPara());
		//System.err.println(key_id_list);
		//然后根据  product_id 和 key_id  反过来  找到所有的 key_id   对应 的sku_value
		for(int i=0;i<key_id_list.size();i++){
			List<ProductSkuValue> value_list= ProductSkuValue.dao.getKeyIdByProductIdAndKeyId(getPara(),Integer.parseInt(key_id_list.get(i).getKeyId()));
			key_id_list.get(i).put("value_list",value_list );
		}
		setAttr("key_id_list", key_id_list);

		//处理SKU收个图片=========================    2016-09-01 肖得明新增处理
		//	List<Object>   sku_list_img =new ArrayList<Object>();
		Map<String,String>  map = new HashMap<String, String>();
		for(ProductSkuValue v  :   ProductSkuValue.dao.getKeyByProductId(getPara())){
			if(StringUtil.isNotBlank(v .getValueImage())){
				map.put(v.getValueId()+"", v .getValueImage());
				//sku_list_img.add(map) ;
			}
		}
		setAttr("sku_thumb", JsonKit.toJson(map));


		setAttr("key_id_list_json", JsonKit.toJson(key_id_list));
		//找到所有的商品sku,
		List<ProductSku> sku_list= ProductSku.dao.getSkuByProductId(getParaToInt());
		setAttr("sku_list", JsonKit.toJson(sku_list));  //尝试多次终于成功

		//轮播图
		String banner_list[]=product.getImageBanner().split(",");
		setAttr("banner_list", banner_list);
		//详情图  image_detail
		String image_detail[]=product.getImageDetail().split(",");
		setAttr("image_detail", image_detail);

/*		//对应店铺的所有商品类型
		List<ProductType>  type_list=ProductType.dao.findAllByShopId(getShopIdByCookie());
		setAttr("type_list", type_list);
		//对应店铺的所有供应商
		List<SupplierRelShop> supply_list=SupplierRelShop.dao.getSupplyUserByShopId(getShopIdByCookie());
		setAttr("supply_list", supply_list);*/


		//所有的分组
		List<ProductTag>tag_list= ProductTag.dao.getTagsByShopId(ShopInfo.shop_id);
		setAttr("tag_list", tag_list);
		//sku  系统和自己的
		//第一个  norm的
		String product_key= ProductSkuKey.dao.getKeyByShopId_ToJson(ShopInfo.shop_id);
		setAttr("product_key",product_key);
		//第二个norm2 的
		if(key_id_list.size()==1){
			String product_key2= ProductSkuKey.dao.norm2_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId());
			setAttr("product_key2",product_key2);
			setAttr("product_key3","");
		}
		else if(key_id_list.size()==2 || key_id_list.size()==3){
			String product_key2= ProductSkuKey.dao.norm2_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId());
			setAttr("product_key2",product_key2);
			String product_key3= ProductSkuKey.dao.norm3_getKeyByShopId_ToJson(ShopInfo.shop_id,key_id_list.get(0).getKeyId(),key_id_list.get(1).getKeyId());
			setAttr("product_key3",product_key3);
		}
		else{
			setAttr("product_key2","");
			setAttr("product_key3","");
		}
		//  系统加载的sku 的value
		String product_value= ProductSkuKey.dao.edit_getValueByProductId_ToJson(getPara(), ShopInfo.shop_id);
		setAttr("product_value",product_value);
		setAttr("product", Products.dao.findById(getParaToInt()));
		//系统加载所有的模版    fang   2016-07-13
		List<TemplateWuliu>  template_list= TemplateWuliu.dao.getTemplateListByShopId(ShopInfo.shop_id);
		setAttr("template_list", template_list);
		//render("product_edit.Eric.html");
		//2016-08-17  根据小袁要求,返回value
		List<ProductSkuValue>  all_value_list= ProductSkuValue.dao.getValueListByProductId(product.getId());
		//System.err.println("所以的value是"+all_value_list);
		String valueString="";
		if(all_value_list.size()!=0){
			for(int i=0;i<all_value_list.size();i++){
				if(i!=all_value_list.size()-1){
					valueString=valueString+all_value_list.get(i).getValueId()+",";
				}
				else {
					valueString=valueString+all_value_list.get(i).getValueId();
				}
			}
		}
		setAttr("valueString", valueString);
		setAttr("view_type", getPara("view_type", "edit"));
		//System.err.println(valueString);
		AdminUser admin= AdminUser.dao.findById(getLoginUserId());
		if(admin==null || admin.getRoleId()==null){
			removeSessionAttr(WebConst.Session_SysUser);
			String  token    =getCookie(LoginController.login_key);
			removeSessionAttr(LoginController.login_key);
			CacheUtils.del(LoginController.login_key_time + token);// 缓存七天
			renderMsg("登录超时","长时间停留导致登录超时","/system/login/" + DateUtil.getTimestamp(),false,false);
			return;
		}
		setAttr("user_type", admin.getRoleId());
		render("product_select.html");
	}

	
	/**
	 * 商品添加的保存
	 * 
	 */
	public void save(){
		log.info("商品增加保存!");
		Products product=getModel(Products.class,"product");
		//System.err.println("库存数量"+product.getStockCount());
		//图片
		String center_image=getPara("center_image");
		product.setImageCenter(center_image);
		String banner_image= StringUtil.array_ToStr(getParaValues("banner_img"));
		product.setImageBanner(banner_image);
		String detail_image= StringUtil.array_ToStr(getParaValues("image_detail"));
		product.setImageDetail(detail_image);
		product.setShopId(ShopInfo.shop_id);
		//是否上架
		//System.err.println("上架状态"+getPara("online_state"));
		if(getPara("online_state")!=null){
			product.setOnlineState(1);//上架
		}
		else{
			product.setOnlineState(2);//未上架
		}

		if (product.getIsOverseasPurchasing()==null) {
			product.setIsOverseasPurchasing(false);
		}
		if(is_where_state.intValue()==0){
			BigDecimal channelMonry=(product.getPrice().multiply(new BigDecimal(product.getDivideRate()))).divide(new BigDecimal(100));
			product.setChannelMoney(channelMonry);
		}


		/**
		 * 2016-08-17  是否积分换购
		 */
		if(getPara("jifen_buy_state")!=null){
			product.setJifenBuyState(1);
			product.setProductJifen(getParaToInt("product_jifen"));
		}
		else{
			product.setJifenBuyState(2);
		}
		//是否启用SKU Img   1启用 2不启用
		if(getPara("enable_sku_img")!=null){
			product.setEnableSkuImg(1);//启用缩略图
		}else{
			product.setEnableSkuImg(2);//不启用缩略图
		}
		product.setCreateuser(getLoginUserId());
		product.save();
		String norm_thumb_json = null; //SKU图片JSON数据
		//*********由于商品规则可能为空,所以要判断
		if(getParaValues("norm_id")!=null  ){
			String norm_id[]= StringUtil.array_ToStr(getParaValues("norm_id")).split(",");
			String norm_price[]= StringUtil.array_ToStr(getParaValues("norm_price")).split(",");;
			String norm_store[]= StringUtil.array_ToStr(getParaValues("norm_store")).split(",");;
			String norm_group_price[]= StringUtil.array_ToStr(getParaValues("norm_group_price")).split(",");
			//fang  2016-07-04  判断编码不为空
			String norm_code[] = null;
			if(getParaValues("norm_code")!=null){
				norm_code= StringUtil.array_ToStr(getParaValues("norm_code")).split(",");;
			}
			//String norm_code[]=StringUtil.array_ToStr(getParaValues("norm_code")).split(",");;
			//往sku_value里面插入  product_id
			if(product.getEnableSkuImg()==1){
				Map<String,String>  map = new HashMap<String, String>();
				String norm_thumb  []  = getParaValues("norm_thumb");
				String norm_skuid  []  = getParaValues("norm_skuid");
				for(int i=0;i<norm_thumb.length;i++){
					if("/static/vendor/img/lazy_200x200.jpg".equals(norm_thumb[i].trim())){
						map.put(norm_skuid[i], AppGlobal.Host_Domain_Name+norm_thumb[i]);
					}else {
						map.put(norm_skuid[i], norm_thumb[i]);
					}
					Db.update("update t_product_sku_value set value_image=? where value_id=? ",norm_thumb[i],norm_skuid[i]);
				}
				norm_thumb_json  =  JsonKit.toJson(map);
			}
		
			for(int i=0; i<norm_id.length;i++){
				String single_id[]=norm_id[i].split("_");
				for(int j=0; j<single_id.length;j++){
					ProductSkuValue skuValue= ProductSkuValue.dao.findById(single_id[j]);
					if(skuValue.getProductId()==null){
						skuValue.setProductId(product.getId());
						skuValue.update();
					}
				}
			}
			//存储 sku
		//	System.err.println(JsonKit.toJson(norm_id));
			for(int i=0; i<norm_id.length;i++){
				ProductSku sku=new ProductSku();
				sku.setSkuId(norm_id[i]);
				sku.setProductId(product.getId());
				sku.setPrice(new BigDecimal(norm_price[i]));
				try {
					sku.setGroupPrice(new BigDecimal(norm_group_price[i]));//团购的价格
				} catch (Exception e) {
					sku.setGroupPrice(new BigDecimal(0));
				}
				if(norm_code!=null){
					if(norm_code.length>i){
						sku.setSkuCode(norm_code[i]);
					}
				}
				//sku.setSkuCode(norm_code[i]);
				sku.setStockCount(Integer.parseInt(norm_store[i]));
			
				sku.setSaleCount(0);//默认0
				sku.save();
				ProductSku pSku= ProductSku.dao.findById(norm_id[i]);
				pSku.setSkuText(ProductSkuValue.dao.getSkuTextBySkuId(product.getId(), norm_id[i]));
				pSku.update();
			}
		}

		//设置productTagRel  不是必须的   fang  2016-08-17  修改
	/*	if(getParaValues("product_tag")!=null){  //可以为空
			String product_tag=StringUtil.array_ToStr(getParaValues("product_tag"));
			String tags[]=product_tag.split(",");
			for( String tag:tags){
				ProductTagRel tagRel=new ProductTagRel();
				tagRel.setProductId(product.getId());
				tagRel.setTagId(Integer.parseInt(tag));
				tagRel.save();
			}
		}*/
		
		//设置sku  text
		Products pro= Products.dao.findById(product.getId());
		pro.setSkuJson(ProductSkuValue.dao.getSkuValueByProductId(product.getId()));
		pro.setSkuThumbJson(norm_thumb_json);
		pro.update();
		pro.cache_clear();//2016-08-19  清理首页商品缓存
		redirect("/system/product");
	}
	
	
	
	/**
	 * fang  2016-06-21
	 * 编辑商品的保存  
	 * 1.判断属性值有没有改变有改变的要  set sku_state==0
	 * 
	 */
	public void edit_save(){
		log.info("商品编辑保存!");
		Products product=getModel(Products.class,"product");
		// 处理模版没有清理   fang  2016-07-13
		if(product.getTemplateId()==null ){
			log.info("清空模版!");
			product.setTemplateId(null);
		}
		//费用没有清理
		if(product.getPostFee()==null ){
			log.info("清空运费!");
			product.setPostFee(new BigDecimal(0.00));
		}
		//2016-08-17  清空  delete_list
		if(getPara("delete_list")!=null){
			String delete_list[]=getPara("delete_list").split(",");
			for( int i=0;i<delete_list.length;i++){
				ProductSkuValue.dao.deleteById(delete_list[i]);
			}
		}
		//图片
		String center_image=getPara("center_image");
		Integer integral = product.getIntegral();
		product.setImageCenter(center_image);
		String banner_image= StringUtil.array_ToStr(getParaValues("banner_img"));
		product.setImageBanner(banner_image);
		String detail_image= StringUtil.array_ToStr(getParaValues("image_detail"));
		product.setImageDetail(detail_image);
		product.setShopId(ShopInfo.shop_id);
		product.setIntegral(integral);
		//是否上架
		//System.err.println("上架状态"+getPara("online_state"));
		if(getPara("online_state")!=null){
			product.setOnlineState(1);//上架
		}
		else{
			product.setOnlineState(2);//未上架
		}
		//是否启用SKU Img   1启用 2不启用
		if(getPara("enable_sku_img")!=null){
			product.setEnableSkuImg(1);
		}
		else{
			product.setEnableSkuImg(2);//未上架
		}

		if (product.getIsOverseasPurchasing()==null) {
			product.setIsOverseasPurchasing(false);
		}
		
		if (product.getAttrType()==5&&product.getRushBuyStartTime()!=null) {
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:00:00"); 
			if (sdf.format(new Date()).equals(sdf.format(product.getRushBuyStartTime()))) {
				product.setRushBuyState(1);
			}
		}else if(product.getAttrType()==2){ //预售商品
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String start_time =getPara("product.preordain_start_time");
			String end_time=getPara("product.preordain_end_time");
			if(StringUtils.isEmpty(start_time) && StringUtils.isEmpty(end_time)){
				try {
					product.setPreordainStartTime(sdf.parse(start_time));
					product.setPreordainEndTime(sdf.parse(end_time));
				}catch (Exception e){
					log.error("预售商品添加、修改 预售日期格式错误 start_time："+start_time+"，end_time："+end_time);
					log.error("failed!",e);
				}
				if(is_where_state.intValue()==0){
					product.setPreordainState(DateOnStatus(product.getPreordainStartTime(),product.getPreordainEndTime()));
				}
			}

		}
		if(is_where_state.intValue()==0) {
			BigDecimal channelMonry = (product.getPrice().multiply(new BigDecimal(product.getDivideRate()))).divide(new BigDecimal(100));
			product.setChannelMoney(channelMonry);
		}
		/**
		 * 2016-08-17  是否积分换购
		 */
		if(getPara("jifen_buy_state")!=null){
			product.setJifenBuyState(1);
			product.setProductJifen(getParaToInt("product_jifen"));
		}
		else{
			product.setJifenBuyState(2);
		}
		String norm_thumb_json = null; //SKU图片JSON数据

		/**
		 * 2019-12-25
		 * 如果状态是失败的话需要更新审核状态
		 */
		if(product.getExamineState().intValue()==Products.examine_state2){
			product.setExamineState(Products.examine_state0);
			product.setExamineUserId(null);
			product.setExamineTime(null);
			product.setFailReason(null);
		}
		product.update();//更新
		
	
		//往sku_value里面插入  product_id
		//这个可能也要删除
		/**
		 * 先全置为1  再查看数据库有没有
		 */
		//存储    或者修改    sku  
		//需要判断  是否要重新建立
		//找到所有的商品sku,
		//先全部置为  2
		ProductSkuValue.dao.setDeleteByProductId(product.getId());
		//所有的sku
		List<ProductSku> sku_list= ProductSku.dao.getAllSkuByProductId(product.getId());
		for(int j=0;j<sku_list.size();j++){
		  sku_list.get(j).setSkuState(2);//2为过期
		  sku_list.get(j).update();
		}
        // ****************注意  这里要判断为不为空    
		if(getParaValues("norm_id")!=null){
			String norm_id[]= StringUtil.array_ToStr(getParaValues("norm_id")).split(",");
			String norm_price[]= StringUtil.array_ToStr(getParaValues("norm_price")).split(",");
			String norm_group_price[]= StringUtil.array_ToStr(getParaValues("norm_group_price")).split(",");
			String norm_store[]= StringUtil.array_ToStr(getParaValues("norm_store")).split(",");
			//fang  2016-07-04  判断编码不为空
			String norm_code[] = null;
			if(getParaValues("norm_code")!=null){
				norm_code= StringUtil.array_ToStr(getParaValues("norm_code")).split(",");;
			}
			//String norm_code[]=StringUtil.array_ToStr(getParaValues("norm_code")).split(",");;
			//接收前端传来的最新的信息
			if(product.getEnableSkuImg()==1){
				Map<String,String>  map = new HashMap<String, String>();
				String norm_thumb  []  = getParaValues("norm_thumb");
				String norm_skuid  []  = getParaValues("norm_skuid");
				for(int i=0;i<norm_thumb.length;i++){
					if("/static/vendor/img/lazy_200x200.jpg".equals(norm_thumb[i].trim())){
						map.put(norm_skuid[i], AppGlobal.Host_Domain_Name+norm_thumb[i]);
					}else {
						map.put(norm_skuid[i], norm_thumb[i]);
					}
					Db.update("update t_product_sku_value set value_image=? where value_id=? ",norm_thumb[i],norm_skuid[i]);
				}
				norm_thumb_json  =  JsonKit.toJson(map);
			}
			
			
			String check_value_list[]=getPara("value_list").split(",");
			for(int i=0;i<check_value_list.length;i++  ){
				    ProductSkuValue skuValue= ProductSkuValue.dao.findById(check_value_list[i]);
				    skuValue.setDeleted(false);//重新启用
					if(skuValue.getProductId()==null){
						skuValue.setProductId(product.getId());
						skuValue.update();
					}else{
						skuValue.update();
					}
			}
            //
			/*List<ProductSku> sku_list=ProductSku.dao.getAllSkuByProductId(product.getId());
			for(int j=0;j<sku_list.size();j++){
			  sku_list.get(j).setSkuState(2);//2为过期
			  sku_list.get(j).update();
			}*/
			
			for(int i=0; i<norm_id.length;i++){
				if(ProductSku.dao.findById(norm_id[i])==null){
					//重新生成
					ProductSku sku=new ProductSku();
					sku.setSkuId(norm_id[i]);
					sku.setProductId(product.getId());
					sku.setPrice(new BigDecimal(norm_price[i]));
					try {
						sku.setGroupPrice(new BigDecimal(norm_group_price[i]));
					} catch (Exception e) {
						sku.setGroupPrice(new BigDecimal(0));
					}
					if(norm_code !=null && norm_code.length>i){
						sku.setSkuCode(norm_code[i]);
					}
					//sku.setSkuCode(norm_code[i]);
					sku.setStockCount(Integer.parseInt(norm_store[i]));
					sku.setSaleCount(0);//默认0
					sku.save();
					ProductSku pSku= ProductSku.dao.findById(norm_id[i]);
					pSku.setSkuText(ProductSkuValue.dao.getSkuTextBySkuId(product.getId(), norm_id[i]));
					pSku.update();
				}
				else{
					//修改
					ProductSku sku_old= ProductSku.dao.findById(norm_id[i]);
					sku_old.setSkuState(1);//设置成为1  正常
					sku_old.setProductId(product.getId());
					sku_old.setPrice(new BigDecimal(norm_price[i]));
					try {
						sku_old.setGroupPrice(new BigDecimal(norm_group_price[i]));
					} catch (Exception e) {
						sku_old.setGroupPrice(new BigDecimal(0));
					}
					
					//System.err.println(norm_code[i]);
					if(norm_code !=null && norm_code.length>i){
						sku_old.setSkuCode(norm_code[i]);
					}
					//sku_old.setSkuCode(norm_code[i]);
					sku_old.setStockCount(Integer.parseInt(norm_store[i]));
					sku_old.update();
				}
			}
		}
	
		//设置productTagRel   //删除之前的分组  

		//设置sku  text
		Products pro= Products.dao.findById(product.getId());
		pro.setSkuThumbJson(norm_thumb_json);
		pro.setSkuJson(ProductSkuValue.dao.getSkuValueByProductId(product.getId()));
		pro.update();
		pro.cache_clear();//2016-08-19  清理首页商品缓存.cache_clear();//2016-08-19  清理首页商品缓存
		//
		List<String>  sql_list =   CacheUtils.get("cache:sql:"+pro.getId());
		if(sql_list!=null){
			if(sql_list.size()>0){
				Db.batch(sql_list,sql_list.size());
			}
			CacheUtils.del("cache:sql:"+pro.getId());
		}
		String  view_type  =getPara("view_type", "edit");
		if(view_type.equals("examine")){
			render("product_close.html");
		  //renderJavascript("<script>parent.layer.closeAll()</script>");
		}else{
		  redirect("/system/product");
		}
	}
	
	
	
	/*
	 * 删除
	 *   这个逻辑其实很复杂
	 *   假删除
	 */
	public void delete(){
		Products product= Products.dao.findById(getPara());
		product.setDelState(true);//真的删除
		product.setOnlineState(2);//设置下线
		if(product.update()){
			product.cache_clear();//2016-08-19  清理首页商品缓存
			success();
		}else{
			fail();
		}
	}

	/**
	 * 根据开始时间和结束时间返回对应的状态
	 * @return 0 未开始 1 正常 2 结束
	 */
	public int DateOnStatus(Date start, Date end){
		Date now =new Date();
		long nowTime=now.getTime();
		long startTime=start.getTime();
		long endTime=end.getTime();
		if(nowTime>start.getTime() && nowTime>endTime){
			return 2;
		}else if(start.getTime()>nowTime && endTime>nowTime){
			return 0;
		}else{
			return 1;
		}
	}

}


